Expert systems are computer programs that provide the skill of an expert in a defined area of expertise. Rule based expert systems capture the skill of an expert by expressing the expertise as a series of rules. The rules are expressed as if-then statements involving symbolic variables. For example, "If conditions (A and B and C) or (B and D and not E) are true, then F is true." makes a logical inference about symbolic variable F based on the program's knowledge of the states of variables A through E. The variables take on the values of true or false and Boolean algebraic rules of logic are used to evaluate the "if" part of the statement. The "then" part of the statement performs an action based on the outcome of the evaluation of the "if" part. In this example, F is set "true" if either set of conditions in parentheses evaluates to "true". Otherwise F is set "false".
In the example, if the expert system was designed to provide intelligent decisions on granting a loan to an individual, F might represent the final decision to grant the loan if true, or deny the loan if false. Other rules could have set A "true" if the individual's income is greater than a given percentage of the loan. B could have been set "true" or "false" depending on a credit search. Thus expert decisions are represented by facts pertinent to the decision and logical rules to interpret the facts. Expert systems have demonstrated their success in such diverse fields as medicine, oil exploration, and finance.
The generation of expert systems has been faced with the difficult task of extracting the rules of expertise from experts, who often find it difficult to express their expertise in such a formal manner. A scientific methodology for developing complete and consistent rule sets has not been in the public domain. System developers have relied on the empirical method of testing the systems and extracting new rules from the expert by presenting him with sets of conditions that elicit incorrect responses from the expert system. It is thus not uncommon to have systems function well for a long period of time and then suddenly fail when a previously unencountered condition occurs.
Another problem faced by expert system designers is the relatively slow speed with which inferences can be drawn. Even though computer speeds have increased dramatically, as more knowledge is built into expert systems, the number of potential decision paths increases exponentially and overpowers the computer improvement. This is known as the combinatorial explosion in which the number of possible outcomes for N variables is equal to 2 raised to the Nth power. The serial nature of most computers and the lack of a viable method to process inferences in a parallel manner efficiently have hampered obtaining a satisfactory solution to this problem.
The problem is akin to maintaining a database for rapid retrieval of information. A directory of keywords can be used to point to the location of randomly stored data. As keywords are added to and deleted from the directory over the lifespan of the database, they have to be inserted in a sorted order, to enable more rapid access. This entails time consuming computational effort. The retrieval then requires a search of the directory to find the keyword which is also time consuming. To reduce the time, hashing methods have been employed. However, hashing takes time and runs into difficulty as the stored data nears the capacity of the storage area.